package cn.edu.lcvc.ebuy_23rj2.service;

import cn.edu.lcvc.ebuy_23rj2.dao.AdminDao;
import cn.edu.lcvc.ebuy_23rj2.model.Admin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 * 专门用于处理管理员的业务
 */
@Service  //<bean id="adminService" class="cn.edu.lcvc.ebuy_23rj2.service.AdminService"/>
public class AdminService {

    @Autowired
    private AdminDao adminDao;

    public AdminService(){
        System.out.println("AdminService初始化");
    }

    /**
     * 登录业务
     * @param username 账户名
     * @param password 密码
     * @return 如果密码正确则返回true,如果密码错误则返回false
     */
//    public boolean login(String username,String password){
//        boolean result=false;//默认登录失败
//        if(username.equals("user")&&password.equals("123")){
//            result=true;
//        }
//        return result;
//    }

    /**
     * 登录业务
     * @param username 账户名
     * @param password 密码
     * @return 如果密码正确则返回true,如果密码错误则返回false
     */
    public boolean login(String username,String password) {
        boolean result=false;//默认登录失败
        if(adminDao.countByUsernameAndPassword(username, password)>0){
            result=true;
        }
        return result;
    }


    /**
     * 根据账户名在数据库读取指定账户的所有信息
     * @param username
     * @return
     */
    public Admin getAdminByUsername(String username){
        return adminDao.getByUsername(username);
    }

    /**
     * 返回管理员表中的所有记录
     * @param admin
     * @return 空集合表示找不到
     */
    public List<Admin> getAdmins(Admin admin){
        return adminDao.find(admin);
    }

    /**
     * 删除指定账号
     * 说明：当前登录账号不能删除自己的账号
     * @param id
     * @return
     */
    public int deleteAdmin(Integer id){
        int result=0;
        if(id!=null){
            result=adminDao.deleteById(id);
        }
        return result;
    }

    /**
     * 添加账户
     * @param admin 账户对象，要添加的表单应该都赋值到这个对象
     * @return 添加成功的记录数量
     */
    public int saveAdmin(Admin admin){
        int result=0;
        if(admin!=null){
            admin.setPassword("123456");
            result=adminDao.save(admin);
        }
        return result;
    }

    /**
     * 判断存在几个相同的账户名
     * @param username
     * @return ture表示重名
     */
    public boolean countUsername(String username){
        boolean result=false;//默认不重名
        if(adminDao.countByUsername(username)>0){
            result=true;
        }
        return result;
    }

    /**
     * 根据id在数据库读取指定账户的所有信息
     * @param id
     * @return
     */
    public Admin getAdminById(Integer id){
        Admin admin=null;//表示默认找不到记录，即null
        if(id!=null){
            admin=adminDao.findById(id);
        }
        return admin;
    }

    /**
     * 编辑账户
     * @param admin 账户对象，要添加的表单应该都赋值到这个对象
     * @return 编辑成功的记录数量
     */
    public int updateAdmin(Admin admin){
        int result=0;
        if(admin!=null){
            result=adminDao.update(admin);
        }
        return result;
    }

    /**
     * 判断存在几个相同的账户名
     * @param username
     * @return ture表示重名
     */
    public boolean countByUsernameAndNotId(String username,Integer id){
        boolean result=false;//默认不重名
        if(adminDao.countByUsernameAndNotId(username, id)>0){
            result=true;
        }
        return result;
    }
 }
